package com.itheima.enumdemo; // 包声明：表示这个类属于com.itheima.enumdemo包，用于组织代码结构

public class Test2 { // 公共类定义：创建名为Test2的公开类，用于测试枚举类的应用场景
    public static void main(String[] args) { // 主方法：Java程序的入口点，程序从这里开始执行
        // 目标：掌握枚举类的应用场景：做信息的分类和标志。 // 注释：说明这段代码的学习目标
        // 需求：模拟上下左右移动图片。 // 注释：具体的业务需求
        // 第一种是常量做信息标志和分类: 但参数值不受约束。 // 注释：说明第一种方式及其局限性
        move(Constant.UP); // 方法调用：调用move方法，传入常量UP作为参数
        // 第二种是枚举做信息标志和分类: 参数值受枚举类约束。 // 注释：说明第二种方式及其优势
        move2(Direction.DOWN); // 方法调用：调用move2方法，传入枚举DOWN作为参数
    } // main方法结束标记

    public static void move2(Direction direction){ // 方法定义：创建名为move2的静态方法，参数为Direction枚举类型
        // 根据这个方向做移动：上下左右。 // 注释：方法的功能说明
        switch (direction){ // switch语句：根据枚举值进行分支判断
            case UP : // case语句：当枚举值为UP时执行
                System.out.println("向上移动"); // 输出：打印"向上移动"字符串
                break; // break语句：跳出当前switch分支，防止穿透
            case DOWN : // case语句：当枚举值为DOWN时执行
                System.out.println("向下移动"); // 输出：打印"向下移动"字符串
                break; // break语句：跳出当前switch分支
            case LEFT : // case语句：当枚举值为LEFT时执行
                System.out.println("向左移动"); // 输出：打印"向左移动"字符串
                break; // break语句：跳出当前switch分支
            case RIGHT : // case语句：当枚举值为RIGHT时执行
                System.out.println("向右移动"); // 输出：打印"向右移动"字符串
                break; // break语句：跳出当前switch分支
        } // switch语句结束
    } // move2方法结束标记

    public static void move(int direction){ // 方法定义：创建名为move的静态方法，参数为int类型
        // 根据这个方向做移动：上下左右。 // 注释：方法的功能说明
        switch (direction){ // switch语句：根据整数常量值进行分支判断
            case Constant.UP : // case语句：当方向值为UP常量时执行
                System.out.println("向上移动"); // 输出：打印"向上移动"字符串
                break; // break语句：跳出当前switch分支
            case Constant.DOWN : // case语句：当方向值为DOWN常量时执行
                System.out.println("向下移动"); // 输出：打印"向下移动"字符串
                break; // break语句：跳出当前switch分支
            case Constant.LEFT : // case语句：当方向值为LEFT常量时执行
                System.out.println("向左移动"); // 输出：打印"向左移动"字符串
                break; // break语句：跳出当前switch分支
            case Constant.RIGHT : // case语句：当方向值为RIGHT常量时执行
                System.out.println("向右移动"); // 输出：打印"向右移动"字符串
                break; // break语句：跳出当前switch分支
            default: // default语句：当所有case都不匹配时执行
                System.out.println("输入有误"); // 输出：打印"输入有误"字符串
        } // switch语句结束
    } // move方法结束标记
} // Test2类结束标记
